<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
    // 静态数据： 归类所有，而不是类的实例化对象
    class Person {
        // 构造函数： 在实例化类的时候，会自定触发
        // 在构造函数中设置的属性为对象所有，如果设置了方法，代表每一个对象都拥有相对应的方法
        constructor(name, sex) {
            this.name = name;
            this.sex = sex;
        }
        // 向原型中添加方法
        show() {
            console.log('this is show');
        }
        // 2、在类的内部通过关键字static进行声明
        static personNum = 4;
        static showNum() {
            console.log(this.personNum);
        }
    }
    // 静态数据包括属性和方法
    // 1、以前的方式
    // 属性
    Person.money = 1000;
    // 方法
    Person.showMoney = function() {
        console.log(this.money);
        // console.log(Person.money);
    }
    Person.showMoney();
    Person.showNum();
    /* 
        两种声明静态数据是存在区别的，static设定的方式，设定了特性，不能够进行枚举的，以前直接添加的方式，可以进行枚举的
            static设定的属性是可以查看的，设定的方法不能查看
    */
    for (let item in Person) {
        console.log(item);
    }
    </script>
</body>
</html>